﻿#include "lvgl_weather_anim.h"
#include "lvgl_weather.h"


//----今明后天----//
void lvgl_weather_p_anim_cb(void* arc, lv_anim_value_t v)
{
    lv_obj_set_y(arc, v);
}

void lvgl_weather_p_anim_ready_cb(lv_anim_t* anim)
{

    lvgl_weather_anim_debug("anim in ready");

}

void lvgl_weather_p_anim_start(int index,int targetpos,int time)
{
#if LVGL_ANIM_SWITCH

    lvgl_weather_anim_debug("anim in start");

    lv_anim_path_init(&lvgl_weather_data.lvgl_weather_p_data[index].anim_path);
    lv_anim_path_set_cb(&lvgl_weather_data.lvgl_weather_p_data[index].anim_path, lv_anim_path_ease_out);
    //lv_anim_path_linear线性动画
    //lv_anim_path_step最后一步更改
    //lv_anim_path_ease_in开头很慢
    //lv_anim_path_ease_out最后慢
    //lv_anim_path_ease_in_out在开始和结束时也很慢
    //lv_anim_path_overshoot超出最终值
    //lv_anim_path_bounce从最终值反弹一点（就像撞墙一样）


    lv_anim_init(&lvgl_weather_data.lvgl_weather_p_data[index].anim);


    lv_anim_set_exec_cb(&lvgl_weather_data.lvgl_weather_p_data[index].anim, lvgl_weather_p_anim_cb);
    lv_anim_set_ready_cb(&lvgl_weather_data.lvgl_weather_p_data[index].anim, lvgl_weather_p_anim_ready_cb);
    lv_anim_set_values(&lvgl_weather_data.lvgl_weather_p_data[index].anim, lv_obj_get_y(lvgl_weather_data.lvgl_weather_p_data[index].cont), targetpos);
    lv_anim_set_time(&lvgl_weather_data.lvgl_weather_p_data[index].anim, time);
    lv_anim_set_var(&lvgl_weather_data.lvgl_weather_p_data[index].anim, lvgl_weather_data.lvgl_weather_p_data[index].cont);

    lv_anim_set_path(&lvgl_weather_data.lvgl_weather_p_data[index].anim, &lvgl_weather_data.lvgl_weather_p_data[index].anim_path);
    lv_anim_start(&lvgl_weather_data.lvgl_weather_p_data[index].anim);

#else

    lvgl_weather_anim_in_ready_cb(NULL);
	lv_obj_set_y(lvgl_weather_data.lvgl_weather_p_data[index].cont,targetpos);

#endif

}
//----今明后天----//


//----日期----//
void lvgl_weather_anim_date_cb(void* arc, lv_anim_value_t v)
{
    lv_obj_set_y(arc, v);
}
void lvgl_weather_anim_date_ready_cb(lv_anim_t* anim)
{

    lvgl_weather_anim_debug("anim date ready");


}

void lvgl_weather_anim_date_start(int mode, int time,int targetpos)
{

#if LVGL_ANIM_SWITCH

    lvgl_weather_anim_debug("anim date start");

    lv_anim_path_init(&lvgl_weather_data.anim_path_date);
    lv_anim_path_set_cb(&lvgl_weather_data.anim_path_date, lv_anim_path_ease_in);
    //lv_anim_path_linear线性动画
    //lv_anim_path_step最后一步更改
    //lv_anim_path_ease_in开头很慢
    //lv_anim_path_ease_out最后慢
    //lv_anim_path_ease_in_out在开始和结束时也很慢
    //lv_anim_path_overshoot超出最终值
    //lv_anim_path_bounce从最终值反弹一点（就像撞墙一样）

    lv_anim_init(&lvgl_weather_data.anim_date);
    lv_anim_set_exec_cb(&lvgl_weather_data.anim_date, lvgl_weather_anim_date_cb);
    lv_anim_set_ready_cb(&lvgl_weather_data.anim_date, lvgl_weather_anim_date_ready_cb);
    lv_anim_set_values(&lvgl_weather_data.anim_date, lv_obj_get_y(lvgl_weather_data.cont_date), targetpos);
    lv_anim_set_time(&lvgl_weather_data.anim_date, time);
    lv_anim_set_var(&lvgl_weather_data.anim_date, lvgl_weather_data.cont_date);

    lv_anim_set_path(&lvgl_weather_data.anim_date, &lvgl_weather_data.anim_path_date);
    lv_anim_start(&lvgl_weather_data.anim_date);

#else


    lvgl_weather_anim_date_ready_cb(NULL);
	lv_obj_set_y(lvgl_weather_data.cont_date, targetpos);
#endif

}
//----日期----//

//----温度----//
void lvgl_weather_anim_temperature_cb(void* arc, lv_anim_value_t v)
{
    lv_obj_set_y(arc, v);
}
void lvgl_weather_anim_temperature_ready_cb(lv_anim_t* anim)
{

    lvgl_weather_anim_debug("anim temperature ready");


}

void lvgl_weather_anim_temperature_start(int mode, int time,int targetpos)
{

#if LVGL_ANIM_SWITCH

    lvgl_weather_anim_debug("anim temperature start");

    lv_anim_path_init(&lvgl_weather_data.anim_path_temperature);
    lv_anim_path_set_cb(&lvgl_weather_data.anim_path_temperature, lv_anim_path_ease_in);
    //lv_anim_path_linear线性动画
    //lv_anim_path_step最后一步更改
    //lv_anim_path_ease_in开头很慢
    //lv_anim_path_ease_out最后慢
    //lv_anim_path_ease_in_out在开始和结束时也很慢
    //lv_anim_path_overshoot超出最终值
    //lv_anim_path_bounce从最终值反弹一点（就像撞墙一样）

    lv_anim_init(&lvgl_weather_data.anim_temperature);
    lv_anim_set_exec_cb(&lvgl_weather_data.anim_temperature, lvgl_weather_anim_temperature_cb);
    lv_anim_set_ready_cb(&lvgl_weather_data.anim_temperature, lvgl_weather_anim_temperature_ready_cb);
    lv_anim_set_values(&lvgl_weather_data.anim_temperature, lv_obj_get_y(lvgl_weather_data.cont_temperature), targetpos);
    lv_anim_set_time(&lvgl_weather_data.anim_temperature, time);
    lv_anim_set_var(&lvgl_weather_data.anim_temperature, lvgl_weather_data.cont_temperature);

    lv_anim_set_path(&lvgl_weather_data.anim_temperature, &lvgl_weather_data.anim_path_temperature);
    lv_anim_start(&lvgl_weather_data.anim_temperature);

#else


    lvgl_weather_anim_temperature_ready_cb(NULL);
	lv_obj_set_y(lvgl_weather_data.cont_temperature, targetpos);
#endif

}
//----温度----//

//----进出----//
void lvgl_weather_anim_in_cb(void* arc, lv_anim_value_t v)
{
    lv_obj_set_y(arc, v);
}

void lvgl_weather_anim_in_ready_cb(lv_anim_t* anim)
{

    lvgl_weather_anim_debug("anim in ready");


    lvgl_group_add_obj(&lvgl_weather_data.cont_main);
    lvgl_group_focus_obj(&lvgl_weather_data.cont_main);
    lvgl_send_event(&lvgl_weather_data.cont_main, CZ_EVENT_ANIM_IN_READY, NULL);
}

void lvgl_weather_anim_in_start(int mode, int time)
{
#if LVGL_ANIM_SWITCH




    lvgl_weather_anim_debug("anim in start");

    lv_anim_path_init(&lvgl_weather_data.anim_path_in);
    lv_anim_path_set_cb(&lvgl_weather_data.anim_path_in, LVGL_ANIM_IN_PATH);
    //lv_anim_path_linear线性动画
    //lv_anim_path_step最后一步更改
    //lv_anim_path_ease_in开头很慢
    //lv_anim_path_ease_out最后慢
    //lv_anim_path_ease_in_out在开始和结束时也很慢
    //lv_anim_path_overshoot超出最终值
    //lv_anim_path_bounce从最终值反弹一点（就像撞墙一样）


    lv_anim_init(&lvgl_weather_data.anim_in);


    lv_anim_set_exec_cb(&lvgl_weather_data.anim_in, lvgl_weather_anim_in_cb);
    lv_anim_set_ready_cb(&lvgl_weather_data.anim_in, lvgl_weather_anim_in_ready_cb);
    lv_anim_set_values(&lvgl_weather_data.anim_in, lv_obj_get_y(lvgl_weather_data.cont_main), 0);
    lv_anim_set_time(&lvgl_weather_data.anim_in, LVGL_ANIM_IN_TIME);
    lv_anim_set_var(&lvgl_weather_data.anim_in, lvgl_weather_data.cont_main);

    lv_anim_set_path(&lvgl_weather_data.anim_in, &lvgl_weather_data.anim_path_in);
    lv_anim_start(&lvgl_weather_data.anim_in);

#else


    lvgl_weather_anim_in_ready_cb(NULL);
    lv_obj_set_y(lvgl_weather_data.cont_main, 0);
#endif

}


void lvgl_weather_anim_out_cb(void* arc, lv_anim_value_t v)
{
    lv_obj_set_y(arc, v);
}
void lvgl_weather_anim_out_ready_cb(lv_anim_t* anim)
{

    lvgl_weather_anim_debug("anim out ready");



    lvgl_send_event(&lvgl_weather_data.cont_main, CZ_EVENT_ANIM_OUT_READY, NULL);
    lvgl_weather_close();

}

void lvgl_weather_anim_out_start(int mode, int time)
{

    lvgl_group_remove_obj(&lvgl_weather_data.cont_main);

#if LVGL_ANIM_SWITCH



    lvgl_weather_anim_debug("anim out start");

    lv_anim_path_init(&lvgl_weather_data.anim_path_out);
    lv_anim_path_set_cb(&lvgl_weather_data.anim_path_out, LVGL_ANIM_OUT_PATH);
    //lv_anim_path_linear线性动画
    //lv_anim_path_step最后一步更改
    //lv_anim_path_ease_in开头很慢
    //lv_anim_path_ease_out最后慢
    //lv_anim_path_ease_in_out在开始和结束时也很慢
    //lv_anim_path_overshoot超出最终值
    //lv_anim_path_bounce从最终值反弹一点（就像撞墙一样）

    lv_anim_init(&lvgl_weather_data.anim_out);
    lv_anim_set_exec_cb(&lvgl_weather_data.anim_out, lvgl_weather_anim_out_cb);
    lv_anim_set_ready_cb(&lvgl_weather_data.anim_out, lvgl_weather_anim_out_ready_cb);
    lv_anim_set_values(&lvgl_weather_data.anim_out, lv_obj_get_y(lvgl_weather_data.cont_main), lv_obj_get_height(lv_scr_act()));
    lv_anim_set_time(&lvgl_weather_data.anim_out, LVGL_ANIM_OUT_TIME);
    lv_anim_set_var(&lvgl_weather_data.anim_out, lvgl_weather_data.cont_main);

    lv_anim_set_path(&lvgl_weather_data.anim_out, &lvgl_weather_data.anim_path_out);
    lv_anim_start(&lvgl_weather_data.anim_out);

#else


    lvgl_weather_anim_out_ready_cb(NULL);
    lv_obj_set_y(lvgl_weather_data.cont_main, lv_obj_get_height(lv_scr_act()));
#endif

}
//----进出----//

